package org.smart4j.chapter1.utils;

/**
 * 转型操作工具
 *
 * @author LG93
 * @create 2017-08-10 16:32
 **/
public class CastUtil {

    /**
     * 转为string
     *
     * @param property
     * @return
     */
    public static String castString(Object property) {
        return CastUtil.castString(property, "");
    }

    /**
     * 将string 类型转为 boolean 可以指定默认值
     *
     * @param property
     * @return
     */
    public static String castString(Object property, String defalultValue) {
        return property != null ? String.valueOf(property) : defalultValue;
    }


    /**
     * 转为string
     *
     * @param property
     * @return
     */
    public static boolean castBoolean(Object property) {
        return CastUtil.castBoolean(property, false);
    }

    /**
     * 将string 类型转为 boolean 可以指定默认值
     *
     * @param property
     * @return
     */
    public static boolean castBoolean(Object property, boolean defalultValue) {
        boolean booleanValue = defalultValue;
        if (property != null) {
            String strValue = CastUtil.castString(property);
            if (StringUtil.isNotEmpty(strValue)) {
                booleanValue = Boolean.valueOf(strValue);
            }
        }
        return booleanValue;
    }

    /**
     * 将string 类型转为 int
     *
     * @param property
     * @return
     */
    public static int castInt(Object property) {
        return CastUtil.castInt(property, 0);
    }

    /**
     * 将string 类型转为 int  可以指定默认值
     *
     * @param property
     * @param defalultValue
     * @return
     */
    public static int castInt(Object property, int defalultValue) {
        int intValue = defalultValue;
        if (property != null) {
            String strValue = CastUtil.castString(property);
            if (StringUtil.isNotEmpty(strValue)) {
                intValue = Integer.valueOf(strValue);
            }
        }
        return intValue;
    }

    /**
     * 转为double 类型
     *
     * @param property
     * @return
     */
    public static double castDouble(Object property) {
        return CastUtil.castDouble(property, 0);
    }

    /**
     * 转为double类型
     *
     * @param property
     * @param defaultValue
     * @return
     */
    private static double castDouble(Object property, double defaultValue) {
        double doubleValue = defaultValue;
        if (property != null) {
            String strValue = CastUtil.castString(property);
            if (StringUtil.isNotEmpty(strValue)) {
                doubleValue = Double.valueOf(strValue);
            }
        }
        return doubleValue;
    }

    /**
     * 转为long类型 默认值为0
     *
     * @param property
     * @return
     */
    public static long castLong(Object property) {
        return castLong(property, 0);
    }

    /**
     * 转为long类型 可设置默认值
     *
     * @param property
     * @param defaultValue
     * @return
     */
    private static long castLong(Object property, long defaultValue) {
        long longValue = defaultValue;
        if (property != null) {
            String strValue = CastUtil.castString(property);
            if (StringUtil.isNotEmpty(strValue)) {
                longValue = Long.valueOf(strValue);
            }
        }
        return longValue;
    }

    /**
     * 转为float类型
     *
     * @param property
     * @return
     */
    public static float castFloat(Object property) {
        return castFloat(property, 0f);
    }

    /**
     * 转为flat类型 默认配置
     *
     * @param property
     * @param defaultValue
     * @return
     */
    private static float castFloat(Object property, float defaultValue) {
        float floatValue = defaultValue;
        if (property != null) {
            String strValue = CastUtil.castString(property);
            if (StringUtil.isNotEmpty(strValue)) {
                floatValue = Float.valueOf(strValue);
            }
        }
        return floatValue;
    }
}
